package xjf.learn.stream;

import org.junit.Test;
import xjf.base.entity.Employee;

import java.util.Arrays;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

/**
 * 1. 映射：map——接收Lambda，将元素转换成其他形式或提取信息。接收一个函数作为参数，该函数会被应用到每个元素上，
 *          并将其映射成一个新的元素。    返回的是对象
 *
 * 2. 排序： sorted()——自然排序（Comparable）
 *          sorted(Comparator com)——定制排序(Comparator)
 * @Author: xjf
 * @Date: 2020/4/12 22:28
 */
public class Test2 {

    /**
     * 数据准备
     */
    private List<Employee> employeeList = Arrays.asList(
            new Employee("张三", 45, 6000),
            new Employee("李四", 20, 7600),
            new Employee("王五", 38, 4900),
            new Employee("赵六", 77, 2000),
            new Employee("田七", 54, 6500),
            new Employee("田七", 54, 6500)
    );

    /**
     * 1. 映射
     */
    @Test
    public void test1(){
        // 获取所有姓名
        employeeList.stream()
                .map(Employee::getName)
                .forEach(System.out::println);

        System.out.println("======================================= 分割线 =========================================");

        // 所有工资
        employeeList.stream()
                .map(Employee::getSalary)
                .forEach(System.out::println);
    }

    /**
     * 2. 排序
     */
    @Test
    public void test2(){
        // 根据年龄排序: 升序
        employeeList.stream()
                .sorted(Comparator.comparing(Employee::getAge))
                .forEach(System.out::println);

        System.out.println("======================================= 分割线 =========================================");

        // 根据年龄排序: 降序
        employeeList.stream()
                .sorted(Comparator.comparing(Employee::getAge).reversed())
                .forEach(System.out::println);
    }
}
